/**
 * 属性与方法封装
 * 知识点
 *      1、私有属性、私有方法、共有属性、共有方法、特权方法、保护方法……
 *      2、函数级作用域
 *          声明在函数内部的变量以及方法在外界是访问不到的
 * 
 *          this创建的是对象共有属性
 *          this创建的对象共有方法，可以访问共有属性、共有方法，也可以访问私有属性、私有方法
 *      3、在类的外部通过点语法定义的属性和方法  作用
 *          类的静态共有属性、类的静态共有方法
 *          在类实例的对象中无法获取他们，只能通过类来使用
 *      4、在外部通过prototype定义的属性和方法  作用
 *          共有属性、共有方法
 *          在类实例的对象中可以通过this访问到
 *      5、new创建的对象实质 => P32
 *         
 */
var Book = function(id, name, price) {
    //私有属性
    var num = 1;
    // 私有方法
    function checkId() {};

    // 特权方法
    this.getName = function() {};
    this.getPrice = function() {};
    this.setName = function() {};
    this.setPrice = function() {};

    // 对象公有属性
    this.id = id;
    // 对象公有方法
    this.copy = function() {};
    //构造器[调用特权方法]
    this.setName(name);
    this.setPrice(price);
}

//类静态公有属性
Book.isChinese = true;
//类静态公有方法
Book.resetTime = function() {
    console.log('new item');
};

Book.prototype = {
    // 公有属性
    isJsBook: true,
    // 公有方法
    display: function() {}
};

console.log(Book.num);//undefined
